// 封装axios

// 导入axios
import axios from 'axios'

// 01-设置基础请求地址
let baseURL = ''
    // process.env.NODE_ENV // 获取vite配置好的当前的环境变量
    // 不同的请求地址对应不同的数据库和代码
switch (process.env.NODE_ENV) {
    case 'development':
        //开发时调用的接口
        // baseURL = 'http://47.94.148.165/admin'
        baseURL = 'http://localhost:3001/admin' //本地服务器开发接口http://localhost:3001/admin
        break;
    case 'production':
        // 生产时调用的接口
        baseURL = 'http://47.94.148.165/admin'
        break;
    default:
        break;
}


// 02-自定义配置请求实例
// instance还是axios,是携带了请求地址，请求头，请求时间的axios
const instance = axios.create({
    baseURL: baseURL,
    headers: { 'Content-Type': 'application/json' },
    timeout: 3000 //默认是0
});



// 03-配置拦截器
// 添加请求拦截器
instance.interceptors.request.use(function(config) {
        // 在发送请求之前做些什么
        // 一般在请求头中设置token
        if (localStorage.getItem('token')) {
            config.headers.token = localStorage.getItem('token')
        }
        // 或者写成
        // localStorage.getItem('token') && (config.headers.token = localStorage.getItem('token'))
        return config;
    }, function(error) {
        // 对请求错误做些什么
        return Promise.reject(error);
    })
    // 添加响应拦截器
instance.interceptors.response.use(function(response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么,做响应状态码的判断以及更新本地token
    ElMessage({
        message: response.data.message,
        type: response.data.code == '200' ? 'success' : 'error',
        duration: 2000,
    })
    return response;
}, function(error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});


// 04-导出
export default instance